const pool = require("../config/db"); //引入数据库连接池
const userService = require("../service/userService"); //引入用户服务
const bcrypt = require("bcrypt"); //引入加密模块
const saltRounds = 10; //加密强度
// 查询用户列表的函数
exports.userList = function (req, res) {
  pool.query(userService.userAll, (err, data) => {
    if (err) {
      res.json({
        code: 500,
        msg: "查询失败",
        data: null,
      });
    } else {
      res.json({
        code: 200,
        msg: "查询成功",
        data: data,
      });
    }
  });
};
// 注册用户的函数
exports.register = function (req, res) {
  const { username, email, password } = req.body;
  // 检查必要的字段是否存在
  if (!username || !email || !password) {
    return res
      .status(400)
      .json({ code: 400, msg: "用户名,密码,邮箱不能为空", data: null });
  }

  pool.query(userService.searchUser, username, (err, data) => {
    if (err) {
      return res.json({
        msg: "账号注册失败",
        status: 500,
        data: err,
      });
    } else {
      if (data.length > 0) {
        return res
          .status(400)
          .json({ code: 200, msg: "用户名已存在", data: null });
      } else {
        let hashPassword = bcrypt.hashSync(password, saltRounds);
        console.log(hashPassword);

        pool.query(
          userService.addUser,
          [username, hashPassword, email],
          (err, data) => {
            if (err) {
              return res.json({
                msg: "账号注册失败",
                status: 500,
                data: err,
              });
            } else {
              if (data.affectedRows == 1) {
                return res.json({
                  msg: "账号注册成功",
                  status: 200,
                  data: null,
                });
              } else {
                return res.json({
                  msg: "账号注册失败",
                  status: 500,
                  data: err,
                });
              }
            }
          }
        );
      }
    }
  });
};
//删除用户的函数;
exports.deleteUser = async function (req, res) {
  const { id } = req.params; // 获取用户ID

  // 检查必要的字段是否存在
  if (!id) {
    return res.status(400).json({ message: "用户ID是必填项" });
  }

  try {
    // 先检查用户是否存在
    const userExists = await pool.query("SELECT id FROM users WHERE id = ?", [
      id,
    ]);
    console.log(userExists);

    if (userExists.rowCount === 0) {
      return res.status(404).json({ message: "用户不存在" });
    }

    // 执行删除用户的SQL语句
    const result = await pool.query(userService.deleteUser, [id]);

    // 返回成功响应
    return res.status(200).json({
      msg: "删除成功",
      status: 200,
      data: null,
    });
  } catch (err) {
    // 记录错误日志
    console.error("删除用户时出错:", err);

    // 返回错误响应
    return res.status(500).json({ message: "删除用户时发生错误" });
  }
};
exports.upload = function (req, res) {
  // 存储后的文件信息在 req.file 中，此时文件已经存储到本地了。
  console.log(req.file);
  res.json({
    msg: "文件上传成功",
    status: 200,
    data: null,
  });
};
